#pragma once

#include "Player.hh"
#include "MainMenu.hh"
#include "DataManager.hh"
#include "../Utils/include/json.hpp"
#include "Inventory.hh"
#include "Level.hh"

using json = nlohmann::json;

// 游戏主类,负责管理整个游戏的运行
class Game {
private:
    Menu menu_;               // 主菜单对象
    Player* player_;          // 当前玩家指针
    bool isRunning_;          // 游戏是否正在运行的标志
    Level* level_;            // 当前关卡指针

public:
    Game();                   
    ~Game();
    Game(const Game& other);
    Game& operator=(const Game& other);

    // 游戏流程控制
    void run();               // 运行游戏主循环
    void startNewGame();      // 开始新游戏,进入教学关卡
    void exitGame();          // 退出游戏

    // 存档相关
    void loadGame(const std::string& path); // 从指定路径加载游戏存档
};